Functions | |
| void | lcd_init (uint8_t dispAttr) |
| Initialize display and select type of cursor. | |
| void | lcd_clrscr (void) |
| Clear display and set cursor to home position. | |
| void | lcd_home (void) |
| Set cursor to home position. | |
| void | lcd_gotoxy (uint8_t x, uint8_t y) |
| Set cursor to specified position. | |
| void | lcd_putc (char c) |
| Display character at current cursor position. | |
| void | lcd_puts (const char *s) |
| Display string without auto linefeed. | |
| void | lcd_puts_p (const char *progmem_s) |
| Display string from program memory without auto linefeed. | |
| void | lcd_command (uint8_t cmd) |
| Send LCD controller instruction command. | |
| void | lcd_data (uint8_t data) |
| Send data byte to LCD controller. | |
| #define | lcd_puts_P(__s) lcd_puts_p(PSTR(__s)) |
| macros for automatically storing string constant in program memory | |
Definitions for MCU Clock Frequency | |
| Adapt the MCU clock frequency in Hz to your target. | |
| #define | XTAL 4000000 |
Definition for LCD controller type | |
| Use 0 for HD44780 controller, change to 1 for displays with KS0073 controller. | |
| #define | LCD_CONTROLLER_KS0073 0 |
Definitions for Display Size | |
| Change these definitions to adapt setting to your display | |
| #define | LCD_LINES 4 |
| #define | LCD_DISP_LENGTH 20 |
| #define | LCD_LINE_LENGTH 0x40 |
| #define | LCD_START_LINE1 0x00 |
| #define | LCD_START_LINE2 0x14 |
| #define | LCD_START_LINE3 0x40 |
| #define | LCD_START_LINE4 0x54 |
| #define | LCD_WRAP_LINES 0 |
| #define | LCD_IO_MODE 1 |
Definitions for 4-bit IO mode | |
| Change LCD_PORT if you want to use a different port for the LCD pins. The four LCD data lines and the three control lines RS, RW, E can be on the same port or on different ports. Change LCD_RS_PORT, LCD_RW_PORT, LCD_E_PORT if you want the control lines on different ports.
Normally the four data lines should be mapped to bit 0..3 on one port, but it is possible to connect these data lines in different order or even on different ports by adapting the LCD_DATAx_PORT and LCD_DATAx_PIN definitions. | |
| #define | LCD_PORT PORTA |
| #define | LCD_DATA0_PORT LCD_PORT |
| #define | LCD_DATA1_PORT LCD_PORT |
| #define | LCD_DATA2_PORT LCD_PORT |
| #define | LCD_DATA3_PORT LCD_PORT |
| #define | LCD_DATA0_PIN 0 |
| #define | LCD_DATA1_PIN 1 |
| #define | LCD_DATA2_PIN 2 |
| #define | LCD_DATA3_PIN 3 |
| #define | LCD_RS_PORT LCD_PORT |
| #define | LCD_RS_PIN 4 |
| #define | LCD_RW_PORT LCD_PORT |
| #define | LCD_RW_PIN 5 |
| #define | LCD_E_PORT LCD_PORT |
| #define | LCD_E_PIN 6 |
Definitions for LCD command instructions | |
| The constants define the various LCD controller instructions which can be passed to the function lcd_command(), see HD44780 data sheet for a complete description. | |
| #define | LCD_CLR 0 |
| #define | LCD_HOME 1 |
| #define | LCD_ENTRY_MODE 2 |
| #define | LCD_ENTRY_INC 1 |
| #define | LCD_ENTRY_SHIFT 0 |
| #define | LCD_ON 3 |
| #define | LCD_ON_DISPLAY 2 |
| #define | LCD_ON_CURSOR 1 |
| #define | LCD_ON_BLINK 0 |
| #define | LCD_MOVE 4 |
| #define | LCD_MOVE_DISP 3 |
| #define | LCD_MOVE_RIGHT 2 |
| #define | LCD_FUNCTION 5 |
| #define | LCD_FUNCTION_8BIT 4 |
| #define | LCD_FUNCTION_2LINES 3 |
| #define | LCD_FUNCTION_10DOTS 2 |
| #define | LCD_CGRAM 6 |
| #define | LCD_DDRAM 7 |
| #define | LCD_BUSY 7 |
| #define | LCD_ENTRY_DEC 0x04 |
| #define | LCD_ENTRY_DEC_SHIFT 0x05 |
| #define | LCD_ENTRY_INC_ 0x06 |
| #define | LCD_ENTRY_INC_SHIFT 0x07 |
| #define | LCD_DISP_OFF 0x08 |
| #define | LCD_DISP_ON 0x0C |
| #define | LCD_DISP_ON_BLINK 0x0D |
| #define | LCD_DISP_ON_CURSOR 0x0E |
| #define | LCD_DISP_ON_CURSOR_BLINK 0x0F |
| #define | LCD_MOVE_CURSOR_LEFT 0x10 |
| #define | LCD_MOVE_CURSOR_RIGHT 0x14 |
| #define | LCD_MOVE_DISP_LEFT 0x18 |
| #define | LCD_MOVE_DISP_RIGHT 0x1C |
| #define | LCD_FUNCTION_4BIT_1LINE 0x20 |
| #define | LCD_FUNCTION_4BIT_2LINES 0x28 |
| #define | LCD_FUNCTION_8BIT_1LINE 0x30 |
| #define | LCD_FUNCTION_8BIT_2LINES 0x38 |
| #define | LCD_MODE_DEFAULT ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) ) |
#include <lcd.h>
Originally based on Volker Oth's LCD library, changed lcd_init(), added additional constants for lcd_command(), added 4-bit I/O mode, improved and optimized code.
Library can be operated in memory mapped mode (LCD_IO_MODE=0) or in 4-bit IO port mode (LCD_IO_MODE=1). 8-bit IO port mode not supported.
Memory mapped mode compatible with Kanda STK200, but supports also generation of R/W signal through A8 address line.
#include <led.h.h>
| #define LCD_BUSY 7 |
| #define LCD_CLR 0 |
| #define LCD_CONTROLLER_KS0073 0 |
| #define LCD_DATA0_PIN 0 |
pin for 4bit data bit 0
Definition at line 100 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA0_PORT LCD_PORT |
port for 4bit data bit 0
Definition at line 96 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA1_PIN 1 |
pin for 4bit data bit 1
Definition at line 101 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA1_PORT LCD_PORT |
port for 4bit data bit 1
Definition at line 97 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA2_PIN 2 |
pin for 4bit data bit 2
Definition at line 102 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA2_PORT LCD_PORT |
port for 4bit data bit 2
Definition at line 98 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA3_PIN 3 |
pin for 4bit data bit 3
Definition at line 103 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DATA3_PORT LCD_PORT |
port for 4bit data bit 3
Definition at line 99 of file lcd.h.
Referenced by lcd_init(), lcd_read(), and lcd_write().
| #define LCD_DDRAM 7 |
| #define LCD_DISP_LENGTH 20 |
visibles characters per line of the display
Definition at line 61 of file lcd.h.
Referenced by lcd_putc().
| #define LCD_DISP_OFF 0x08 |
| #define LCD_DISP_ON 0x0C |
| #define LCD_E_PIN 6 |
| #define LCD_E_PORT LCD_PORT |
| #define LCD_FUNCTION_8BIT_1LINE 0x30 |
| #define LCD_HOME 1 |
| #define LCD_LINE_LENGTH 0x40 |
| #define LCD_MODE_DEFAULT ((1<<LCD_ENTRY_MODE) | (1<<LCD_ENTRY_INC) ) |
| #define lcd_puts_P | ( | __s | ) | lcd_puts_p(PSTR(__s)) |
| #define LCD_RS_PIN 4 |
| #define LCD_RS_PORT LCD_PORT |
| #define LCD_RW_PIN 5 |
| #define LCD_RW_PORT LCD_PORT |
| #define LCD_START_LINE1 0x00 |
DDRAM address of first char of line 1
Definition at line 65 of file lcd.h.
Referenced by lcd_gotoxy(), lcd_newline(), and lcd_putc().
| #define LCD_START_LINE2 0x14 |
DDRAM address of first char of line 2
Definition at line 66 of file lcd.h.
Referenced by lcd_gotoxy(), lcd_newline(), and lcd_putc().
| #define LCD_START_LINE3 0x40 |
DDRAM address of first char of line 3
Definition at line 67 of file lcd.h.
Referenced by lcd_gotoxy(), lcd_newline(), and lcd_putc().
| #define LCD_START_LINE4 0x54 |
DDRAM address of first char of line 4
Definition at line 68 of file lcd.h.
Referenced by lcd_gotoxy(), lcd_newline(), and lcd_putc().
| #define LCD_WRAP_LINES 0 |
| #define XTAL 4000000 |
| void lcd_clrscr | ( | void | ) |
Clear display and set cursor to home position.
| void |
Definition at line 417 of file lcd.c.
References LCD_CLR, and lcd_command().
| void lcd_command | ( | uint8_t | cmd | ) |
Send LCD controller instruction command.
| cmd | instruction to send to LCD controller, see HD44780 data sheet |
Definition at line 355 of file lcd.c.
References lcd_waitbusy(), and lcd_write().
| void lcd_data | ( | uint8_t | data | ) |
Send data byte to LCD controller.
Similar to lcd_putc(), but without interpreting LF
| data | byte to send to LCD controller, see HD44780 data sheet |
Definition at line 367 of file lcd.c.
References lcd_waitbusy(), and lcd_write().
| void lcd_gotoxy | ( | uint8_t | x, | |
| uint8_t | y | |||
| ) |
Set cursor to specified position.
| x | horizontal position (0: left most position) | |
| y | vertical position (0: first line) |
Definition at line 381 of file lcd.c.
References lcd_command(), LCD_DDRAM, LCD_START_LINE1, LCD_START_LINE2, LCD_START_LINE3, and LCD_START_LINE4.
| void lcd_home | ( | void | ) |
Set cursor to home position.
| void |
Definition at line 426 of file lcd.c.
References lcd_command(), and LCD_HOME.
| void lcd_init | ( | uint8_t | dispAttr | ) |
Initialize display and select type of cursor.
| dispAttr | LCD_DISP_OFF display off LCD_DISP_ON display on, cursor off LCD_DISP_ON_CURSOR display on, cursor on LCD_DISP_ON_CURSOR_BLINK display on, cursor on flashing |
Definition at line 521 of file lcd.c.
References DDR, delay, lcd_clrscr(), lcd_command(), LCD_DATA0_PIN, LCD_DATA0_PORT, LCD_DATA1_PIN, LCD_DATA1_PORT, LCD_DATA2_PIN, LCD_DATA2_PORT, LCD_DATA3_PIN, LCD_DATA3_PORT, LCD_DISP_OFF, LCD_E_PIN, LCD_E_PORT, lcd_e_toggle, LCD_FUNCTION_8BIT_1LINE, LCD_FUNCTION_DEFAULT, LCD_MODE_DEFAULT, LCD_RS_PIN, LCD_RS_PORT, LCD_RW_PIN, LCD_RW_PORT, and lcd_write().
| void lcd_putc | ( | char | c | ) |
Display character at current cursor position.
| c | character to be displayed |
Definition at line 437 of file lcd.c.
References LCD_DDRAM, LCD_DISP_LENGTH, lcd_newline(), LCD_START_LINE1, LCD_START_LINE2, LCD_START_LINE3, LCD_START_LINE4, lcd_waitbusy(), and lcd_write().
| void lcd_puts | ( | const char * | s | ) |
Display string without auto linefeed.
| s | string to be displayed |
Definition at line 484 of file lcd.c.
References lcd_putc().
| void lcd_puts_p | ( | const char * | progmem_s | ) |
Display string from program memory without auto linefeed.
| s | string from program memory be be displayed |
Definition at line 501 of file lcd.c.
References lcd_putc().
1.5.3